Add option to xm create to skip DTD checks.
authorTom Wilkie <tom.wilkie@gmail.com>
Mon, 26 Mar 2007 14:09:24 +0000 (15:09 +0100)
committerTom Wilkie <tom.wilkie@gmail.com>
Mon, 26 Mar 2007 14:09:24 +0000 (15:09 +0100)
signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>

tools/python/xen/xm/create.py
tools/python/xen/xm/xenapi_create.py

index c3fe568fd4cf763ffff6be3cd08dff2fda34eb05..c11189a59d120056465659a35375a5f233a1c0b1 100644 (file)
@@ -104,6 +104,11 @@ gopts.opt('xmldryrun', short='x',
           use="XML dry run - prints the resulting configuration in XML but "
           "does not create the domain.")
 
+gopts.opt('skipdtd', short='s',
+          fn=set_true, default=0,
+          use="Skip DTD checking - skips checks on XML before creating. "
+          " Experimental.  Can decreate create time." )
+
 gopts.opt('paused', short='p',
           fn=set_true, default=0,
           use='Leave the domain paused after it is created.')
@@ -1279,9 +1284,11 @@ def main(argv):
         from xen.xm.xenapi_create import xenapi_create
         xenapi_create_inst = xenapi_create()
         if opts.is_xml:
-            vm_refs = xenapi_create_inst.create(filename = config)
+            vm_refs = xenapi_create_inst.create(filename = config,
+                                                skipdtd = opts.vals.skipdtd)
         else:
-            vm_refs = xenapi_create_inst.create(document = doc)
+            vm_refs = xenapi_create_inst.create(document = doc,
+                                                skipdtd = opts.vals.skipdtd)
 
         map(lambda vm_ref: server.xenapi.VM.start(vm_ref, 0), vm_refs)
     elif not opts.is_xml:
index ebc3a7511337bfbe121ea4df0758f51bdf2420e4..0d2ab7dffb2dea031e83a57a5352b5824bc6fc86 100644 (file)
@@ -75,15 +75,20 @@ class xenapi_create:
 
         self.dtd = "/usr/lib/python/xen/xm/create.dtd"
 
-    def create(self, filename=None, document=None):
+    def create(self, filename=None, document=None, skipdtd=False):
         """
         Create a domain from an XML file or DOM tree
         """
+        if skipdtd:
+            print "Skipping DTD checks.  Dangerous!"
+        
         if filename is not None:
-            self.check_dtd(filename)
+            if not skipdtd:
+                self.check_dtd(filename)
             document = parse(filename)
         elif document is not None:
-            self.check_dom_against_dtd(document)
+            if not skipdtd:
+                self.check_dom_against_dtd(document)
 
         self.check_doc(document)